package com.zhouyu;

import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ScannedGenericBeanDefinition;

public class Test05 {
	public static void main(String[] args) {
		/**
		 * 销毁 bean使用的方法
		 * 1、使用 PreDestroy 无数量限制
		 * 2、实现 AutoCloseable 接口
		 * 3、实现 DisposableBean 接口
		 * 4、在beanPostProcessor 里面设置一下 (inferred) ，最后直接调用  close 或者 shutdown方法，
		 *    不需要实现接口和写注解等等。
		 */
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
		/**
		 * 可以定一个销毁的钩子
		 */
		/*context.registerShutdownHook();*/
		ScannedGenericBeanDefinition beanDefinition = (ScannedGenericBeanDefinition) context.getBeanDefinition("destroyBean");
		context.close();
	}
}
